import request from 'wechat-http'
import {
  store
} from '../store/index.js';
export const baseURL = 'https://live-api.itheima.net';
request.baseURL = 'https://live-api.itheima.net';
// 配置请求拦截器
request.intercept.request = (config) => {

  const token = wx.getStorageSync('token') || ''
  if (token) {
    config.header = {
      Authorization: `Bearer ${token}`,
      ...config.header
    }
  }
  // 返回请求配置对象
  return config
}
// 响应拦截器
request.intercept.response = async (response) => {
  // 如果访问的是 /refreshToken

  if (response.statusCode === 401) {
    if (response.config.url.includes('/refreshToken')) {
      // 提示用户重新登录
      wx.utils.toast('请重新登录')
      // 跳转登录页面
      // 页面栈 访问的路径 数组 数组的最后一个元素是当前访问页面
      const currentPages = getCurrentPages()
      // 获取最后一个页面的路径
      const lastPage = currentPages[currentPages.length - 1].route
      // console.log(lastPage)
      // 跳转到登录页面 并且携带参数
      return wx.redirectTo({
        url: '/pages/login/index?redirect=' + lastPage
      })
    }
    if (!wx.getStorageSync('r_token')) return

    const res = await request({
      url: '/refreshToken',
      method: 'POST',
      header: {
        // 这时要注意使用的是 r_token
        Authorization: `Bearer ${wx.getStorageSync('r_token')}`
      },
    })
    store.setUser(res.data.token, res.data.refreshToken)
    // 重新调用 http 方法
    //刷新token后，重新调用当前请求
    response.config.header = {
      Authorization: `Bearer ${wx.getStorageSync('token')}`
    }
    return request(response.config)
  }
  const res = response.data || {}
  // 判断后端业务状态码是否正确
  if ((res.code >= 200 && res.code < 300) || res.code === 10000) {
    return res
    // 返回核心数据
  }
  return Promise.reject(res)
}
// 普通的模块导出
wx.http = request;

export default request